package com.example.demo_mysql_mybatisplus.mybatisplus.entitys.base;


import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

/**
 @DateTimeFormat 和 @JsonFormat 注解都可以用于格式化日期类型的属性，但是它们的作用对象和使用场景略有不同。
 @DateTimeFormat 适用于前端传入的日期字符串类型的转换。
 @JsonFormat 注解是 Jackson 序列化/反序列化库提供的注解，用于控制 JSON 格式的日期类型的格式化方式。在返回 JSON 格式的响应数据时，通常需要将日期类型的属性转换成指定的格式字符串，以便前端代码正确渲染。
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class BaseEntity {

    @TableField(value = "create_time",fill = FieldFill.INSERT)
//    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    @TableField(value = "create_by",fill = FieldFill.INSERT)
    private Long createBy;

    @TableField(value = "update_time",fill = FieldFill.UPDATE)
//    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;

    @TableField(value = "update_by",fill = FieldFill.UPDATE)
    private Long updateBy;

    @TableField(value = "is_delete" )
    private boolean isDelete;

    @TableField(exist = false)
    private String rawValue;

    @TableField(exist = false)
    private String newValue;

}
